From 41f48cb1bd82bfd78d5d61dbfe173906ed298149 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 3 Mar 1993 05:12:05 +0000 Subject: [PATCH] (write-file): Handle directory name as arg. --- lisp/files.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 49d452b92e2..60329f162b2 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -935,7 +935,10 @@ if you wish to pass an empty string as the argument." (defun write-file (filename) "Write current buffer into file FILENAME. -Makes buffer visit that file, and marks it not modified." +Makes buffer visit that file, and marks it not modified. +If the buffer is already visiting a file, you can specify +a directory name as FILENAME, to write a file of the same +old name in that directory." ;; (interactive "FWrite file: ") (interactive (list (if buffer-file-name @@ -946,7 +949,13 @@ Makes buffer visit that file, and marks it not modified." (buffer-local-variables))) nil nil (buffer-name))))) (or (null filename) (string-equal filename "") - (set-visited-file-name filename)) + (progn + ;; If arg is just a directory, + ;; use same file name, but in that directory. + (if (and (file-directory-p filename) buffer-file-name) + (setq filename (concat (file-name-as-directory filename) + (file-name-nondirectory buffer-file-name)))) + (set-visited-file-name filename))) (set-buffer-modified-p t) (save-buffer)) -- 2.30.2